<?php
namespace app\forum_admin\controller;

use app\BaseController;
use think\facade\Config;
use think\facade\Env;
use think\facade\Db;

class Deal extends BaseController
{
    use \liliuwei\think\Jump;
  // 检查登录状态
  public function check()
  {
    // 如果没有登录，就做出限制
    if (!session('?aNick')) {
      $this->error("请登录后在访问该功能！","admin/alogin");
    }
  }
	// 查询版块的函数
	public function showSec()
	{
		// 查询版块
		$sec = Db::name("section")
			->field("s_name,s_id")
			->select();
		return $sec;
	}
	// 检查sid的方法
	public function checkSid($sid){
		// 编写链式操作，查询sid是否合法
		$secYes = Db::name("section")
				->where("s_id",$sid)
				->field("s_name")
				->find();
		// 单分支，检查查询结果是否为null，提示跳转
		// 返回版块名字
		return($secYes["s_name"]);
	}
	// 检查mid的方法
	public function checkMid($mid){
		if ($mid=='-1') {
			$this->error('操作有误，请重试');
			exit();
		}
		$mesYes=DB::name('mes')
				->field('m_id')
				->where('m_id',$mid)
				->find();
		if ($mesYes==null) {
			$this->error('查无此帖');
			exit();
		}
	}
	// 检查rid的方法
  public function checkRid($rid){
    if ($rid=='-1') {
      $this->error('操作有误，请重试');
      exit();
    }
    $ResYes=DB::name('res')
          ->field('r_id')
          ->where('r_id',$rid)
          ->find();
    if ($ResYes==null) {
      $this->error('查无此回复');
      exit();
    }
  }
  // 帖子管理
	public function mesDeal($sid=1)
	{
    $this->check();
		// 查询版块
		$sec = $this->showSec();
		// 加载某个版块的帖子
		// 检查sid的值
		$thisSec = $this->checkSid($sid);

		$find = input('find');
		// 查询某个版块的帖子列表
		// 视图查询
		if ($sid==0 and $find==null) {
        // 加载全部帖子
      	//依照m_id升序的板块帖子列表
        // 多表查询mes、user
        $mes= Db::view('mes','m_id,m_title,u_nick,m_createat,m_content')
            ->view('user',"u_img","mes.u_nick=user.u_nick")
            -> order('m_id','esc')
            -> order('m_createat')
            ->paginate([
                  'list_rows'=> 10,
                   'query'=>['sid'=>$sid]
            ]);
        //单独赋值分页输出的模板变量
           $page=$mes->render();
         }
         elseif ($find!=null) {
            $mes= Db::view('mes','m_id,m_title,u_nick,m_createat,m_content')
           ->view('user',"u_img","mes.u_nick=user.u_nick")
           ->whereLike('m_title',"%$find%")
           -> order('m_id','esc')
           -> order('m_createat')
            ->paginate([
                  'list_rows'=> 10,
                   'query'=>['sid'=>$sid]
            ]);
        	//单独赋值分页输出的模板变量
            $page=$mes->render();
         }
         else{
          //检查sid，如果是错误sid则提示错误
          $this->checkSid($sid);

        // 加载某个帖子
      	//依照m_id升序的板块帖子列表
        // 多表查询mes、user
           $mes= Db::view('mes','m_id,m_title,u_nick,m_createat,m_content')
           ->view('user',"u_img","mes.u_nick=user.u_nick")
           ->where('s_id',"=",$sid)
           -> order('m_id','esc')
            -> order('m_createat')
            ->paginate([
                  'list_rows'=> 10,
                   'query'=>['sid'=>$sid]
            ]);
           //单独赋值分页输出的模板变量
           $page=$mes->render();
           $sname=Db::name('section')
        		->field('s_name')
        		->where('s_id',$sid)
        		->value('s_name');
         }

        $mid=input('mid');
        if ($mid!=null) {
        	$this->checkMid($mid);
        	// 删除帖子
        	$delView=Db::name('mes')
        		->where('m_id',$mid)
        		->delete();
        	if ($delView!=0) {
        		$this->success('帖子删除成功','mesDeal');
        	}else{
				$this->error('帖子删除失败');
        	}
        }
		return view('',['sec'=>$sec,'mes'=>$mes,'thisSec'=>$thisSec]);
	}
	// 后台帖子详情
	public function aDetail($mid='-1')
	{
    $this->check();
    $this->checkMid($mid);
		$sec=$this->showSec(); 
		$mes= Db::view('mes','m_id,m_title,u_nick,m_createat,m_content')
          ->view('section',"s_name","mes.s_id=section.s_id")
          ->view('user',"u_nick,u_img","mes.u_nick=user.u_nick")
          ->where('mes.m_id',"=",$mid)
          ->find();
    $res= Db::view('res','r_id,u_nick,r_createat,r_content')
          ->view('user',"u_nick,u_img","res.u_nick=user.u_nick")
          ->where('m_id',$mid)
          ->order('res.r_id','desc')
          ->paginate([
                'list_rows'=> 3,
                'query'=>['mid'=>$mid]
          ]);
    $page=$res->render();
		return view('',['mes'=>$mes,'sec'=>$sec,'res'=>$res,'page'=>$page]);
	}
	// 删除帖子中的回复
	public function resDel($rid='-1')
	{
		$this->checkRid($rid);
		$del=Db::name('res')
            ->where('r_id',$rid)
            ->delete();
    if ($del!=0) {
        $this->success('回复帖子删除成功');
    }else{
        $this->error('回复帖子删除失败');
    }
	}

  // 版块管理
  public function secDeal()
  {
    $this->check();

    $sid=input('sid');
    
    $find = input('find');

    if ($find==null) {
      if ($sid!=null) {
        $this->checkSid($sid);
        $selmes = Db::name('mes')
              ->field('m_id')
              ->where('s_id',$sid)
              ->select();
        foreach ($selmes as $key => $mes) {
          $del = Db::name('res')
               ->where('m_id',$mes['m_id'])
               ->delete();
        }
        $delsec = Db::name('section')
                ->where('s_id',$sid)
                ->delete();
        if ($delsec!=0) {
          $this->success('版块删除成功','secDeal');
        }else{
          $this->error('版块删除失败');
        }
      }
      $sec = Db::name('section')
        -> field("s_id,s_name,s_remark")
        ->paginate(10);
      $page=$sec->render();
      return view('',['sec'=>$sec,'page'=>$page]);
    }else{
      $sec = Db::name('section')
            -> field("s_id,s_name,s_remark")
            ->whereLike('s_name',"%$find%")
            ->paginate(10);
           $page=$sec->render();
      return view('',['sec'=>$sec,'page' => $page]);
    }
  }

  // 添加版块
  public function secAdd()
  {
    $this->check();
    return view();
  }
  public function secDoAdd($sName,$sRemark)
  {
    $data=[
      's_name'=>$sName,
      's_remark'=>$sRemark
    ];
    $sec=DB::name('section')
        ->insert($data);
    if ($sec==1) {
      $this->success('版块添加成功','secDeal');
    }else{
      $this->error('版块添加失败');
    }
  }

  // 修改版块
  public function secInfo($sid)
  {
    $this->check();
    $this->checkSid($sid);
    $sec = Db::name('section')
          ->field("s_id,s_name,s_remark")
          ->where('s_id',$sid)
          ->select();
    return view('',['sec'=>$sec,'sid'=>$sid]);
  }
  public function secInfoModi($s_name,$s_remark,$sid)
  {
    $this->check();
    $this->checkSid($sid);
    $data=[
      's_name'=>$s_name,
      's_remark'=>$s_remark
    ];
    $sec=DB::name('section')
        ->where('s_id',$sid)
        ->update($data);
    if ($sec==1) {
      $this->success('版块修改成功','secDeal');
    }else{
      $this->error('版块修改失败');
    }
  }

  // 用户管理
  public function userDeal()
  {
      $this->check();
      $find=input('find');
      if ($find==null) {
        // 加载全部用户
        // 查询user
        $mes= Db::name('user')
            ->field("u_nick,u_img,u_email,u_tel,u_power")
            ->paginate(5);
        //单独赋值分页输出的模板变量
        $page=$mes->render(); 
      }
      else {
        // 查询user
        $mes= Db::name('user')
            ->field("u_nick,u_img,u_email,u_tel,u_power")
            ->whereLike('u_nick',"%$find%")
            ->paginate(5);
        //单独赋值分页输出的模板变量
        $page=$mes->render();
      }
      $num=1;
      return view('',['num'=>$num,'mes'=>$mes,'page' => $page]);
    }

    public function userPower($u_nick,$u_power)
    {
        $this->check();
        $mes = Db::name('user')
            ->field('u_nick,u_power')
            ->where('u_power',$u_power)
            ->where('u_nick',$u_nick)
            ->find();
        if($mes==null){
           $this->error('操作失误，没有该用户') ;
        }
        return view('',['u_nick'=>$u_nick,'u_power'=>$u_power]);
    }

    public function userPowerModi($u_nick,$power)
    {
      $this->check();
      $mes = Db::name('user')
            ->field('u_nick')
            ->where('u_nick',$u_nick)
            ->find();
        if($mes==null){
          $this->error('操作失误，没有该用户') ;
        }
        
        $mes=Db::name('user')
            ->where('u_nick',$u_nick)
            ->update(['u_power'=>$power]);
        if ($mes==1) {
          $this->success('修改权限成功，返回用户管理页面','deal/userdeal');
        }else{
          $this->error('修改失败') ;
        }
    }
  }